#pragma once
#include "Binding/BoundExpression.hpp"
#include "Symbol/TypeSymbol.hpp"
#include "Syntax/Object/Object.hpp"

class BoundLiteralExpression : public BoundExpression
{
public:
    SharedObject Value;

public:
    BoundLiteralExpression(SharedObject value) : BoundExpression(BoundNodeKind::LiteralExpression, TypeSymbol::Make(value->GetType())), Value(value) {}

public:
    virtual std::vector<std::tuple<std::string, std::string>> GetProperties() override { return {{"Type", this->GetType()->ToString()},{"Value", Value->ToString()}}; }
};